package vashion.azeroth.core.activity;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import vashion.azeroth.core.pojo.AttributeUtils;
import vashion.azeroth.core.pojo.BaseObject;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 描述：全球购活动产品扩展表
 * Date 2014-05-28
 */
@Data
public class GlobalActivityExtendInfoDO extends BaseObject implements Serializable {

    private static final long serialVersionUID = -7370123457218336573L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 修改时间
     */
    private Date gmtModified;

    /**
     * 如果活动类型是惊喜，这个字段是商品ID。。如果是首页，这里是卖家ID
     */
    private Long unitId;

    /**
     * 标签字段，k：v存储。与页面无关，只存储活动中商品的销量等统计类信息
     */
    private String feature;

    /**
     * 存放每个活动报名的商品或卖家信息,json形式存储
     */
    private String contents;


    /**
     * 活动维度 1：卖家维度  2：商品维度
     */
    private int unitType;

    /**
     * 活动类型 1：惊喜  2：首页
     */
    private int activityType;

    /**
     * 活动ID，活动表的主键
     */
    private Long activityId;

    /**
     * 活动开始时间
     */
    private Date startTime;

    /**
     * 活动结束时间
     */
    private Date endTime;

    public Map<String, String> parseFeatures() {
        return AttributeUtils.getAttributeKeyToValueMap(feature);
    }

    public Map<String, String> parseContent(Map<String/**key*/, String/**value*/> schemaKeyToValueMap) {
        JSONObject json = (JSONObject) JSONObject.parse(contents);
        JSONObject jsonContent = json.getJSONObject(ActiveConstant.JSON_KEY);
        Map<String, String> contentMap = new LinkedHashMap<String, String>();
        for (String key : schemaKeyToValueMap.keySet()) {
            String valueContent = jsonContent.getString(key);
            contentMap.put(key, valueContent == null ? "" : valueContent.trim());
        }
        return contentMap;
    }


    public String getContentAttribute(String key) {
        try {
            String content = this.getContents();
            JSONObject json = (JSONObject) JSONObject.parse(content);
            JSONObject jsonContent = json.getJSONObject(ActiveConstant.JSON_KEY);
            return jsonContent.get(key).toString();
        } catch (Exception e) {
        }
        return null;
    }
}